Исходный текст
Option Explicit
Call SelectObjDlg("OBJ_TEST")
'==============================================================================
' Открыть диалог выбора объектов: если задан аргумент ObjDefName - c набором
'однотипных объектов, если ObjDefName пустая строка - показать все объекты Рабочего стола.
'==============================================================================
Sub SelectObjDlg(ObjDefName)
Dim SelObjDlg, RetVal, obj, ObjCol
'Получить ссылку на диалог
Set SelObjDlg = ThisApplication.Dialogs.SelectObjectDlg
SelObjDlg.Prompt = "Выберите один или несколько объектов:"
'Если в параметрах передано системное имя типа объекта...
If ObjDefName <> "" Then
'Проверить, существует ли такой тип в системе.
If ThisApplication.ObjectDefs.Has(ObjDefName) Then
'Если тип объекта найден, передать его на вход диалога...
SelObjDlg.ObjectDef = ObjDefName
'Надо учитывать - если диалог инициализирован типом объекта, то сначала
'будет показано окно задания доп. критериев поиска
RetVal = SelObjDlg.Show
Else
MsgBox "Тип объекта """ & ObjDefName & """не найден.", vbExclamation
Exit Sub
End If
'Иначе - инициализировать диалог коллекцией объектов, помещенных на Рабочий стол
Else
SelObjDlg.SelectFromObjects = ThisApplication.Desktop.Objects
RetVal = SelObjDlg.Show
End If
' Если ничего не выбрано или диалог отменен, выйти
Set ObjCol = SelObjDlg.Objects
If (RetVal<>TRUE) Or (ObjCol.Count=0) Then Exit Sub
'Для всех выделенных объектов - вывести описание в окно сообщений
For Each obj In ObjCol
ThisApplication.AddNotify obj.Description
Next
End Sub
'==============================================================================